var TroopTypes;
(function (TroopTypes) {
    TroopTypes._map = [];
    TroopTypes._map[0] = "SamuraiSwordman";
    TroopTypes.SamuraiSwordman = 0;
    TroopTypes._map[1] = "Ronin";
    TroopTypes.Ronin = 1;
    TroopTypes._map[2] = "AshiguruSpearman";
    TroopTypes.AshiguruSpearman = 2;
    TroopTypes._map[3] = "Diaymo";
    TroopTypes.Diaymo = 3;
    TroopTypes._map[4] = "AshiguruMusketman";
    TroopTypes.AshiguruMusketman = 4;
    TroopTypes._map[5] = "SamuraiBowman";
    TroopTypes.SamuraiBowman = 5;
})(TroopTypes || (TroopTypes = {}));

var Troop = (function () {
    function Troop(troopType) {
        this._troopType = troopType;
        this._isSamurai = false;
        this._isAshiguru = false;
        this._isRange = false;
        switch(troopType) {
            case TroopTypes.SamuraiSwordman: {
                this._isRange = false;
                this._attackValue = 5;
                this._isSamurai = true;
                break;

            }
            case TroopTypes.Ronin: {
                this._isRange = false;
                this._attackValue = 5;
                this._isRonin = true;
                break;

            }
            case TroopTypes.AshiguruSpearman: {
                this._isRange = false;
                this._attackValue = 4;
                this._isAshiguru = true;
                break;

            }
            case TroopTypes.Diaymo: {
                this._isRange = false;
                this._attackValue = 6;
                break;

            }
            case TroopTypes.AshiguruMusketman: {
                this._isRange = true;
                this._attackValue = 4;
                this._isAshiguru = true;
                break;

            }
            case TroopTypes.SamuraiBowman: {
                this._isRange = true;
                this._attackValue = 6;
                this._isSamurai = true;
                break;

            }
        }
    }
    Object.defineProperty(Troop.prototype, "IsRange", {
        get: function () {
            return this._isRange;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(Troop.prototype, "TroopType", {
        get: function () {
            return this._troopType;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(Troop.prototype, "AttackValue", {
        get: function () {
            return this._attackValue;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(Troop.prototype, "IsSamurai", {
        get: function () {
            return this._isSamurai;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(Troop.prototype, "IsAshiguru", {
        get: function () {
            return this._isAshiguru;
        },
        enumerable: true,
        configurable: true
    });
    return Troop;
})();
